using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._BusinessAnalystTools._TargetMarketing
{
    /// <summary>
    /// <para>Generate Segmentation Profile Report</para>
    /// <para>Creates a report that displays segments of your customers and compares them to the study area (base profile).</para>
    /// <para>创建一个报表，用于显示客户细分，并将其与研究区域（基本配置文件）进行比较。</para>
    /// </summary>    
    [DisplayName("Generate Segmentation Profile Report")]
    public class GenerateSegmentationProfileReport : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateSegmentationProfileReport()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_profile">
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be profiled. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// </param>
        /// <param name="_base_profile">
        /// <para>Base Profile</para>
        /// <para>A segmentation profile representing the base profile segments. This is the segmentation used for comparison. The base profile usually represents your market area segmentation profile.</para>
        /// <para>表示基本配置文件段的分段配置文件。这是用于比较的细分。基本概况通常代表您的市场区域细分概况。</para>
        /// </param>
        public GenerateSegmentationProfileReport(object _target_profile, object _base_profile)
        {
            this._target_profile = _target_profile;
            this._base_profile = _base_profile;
        }
        public override string ToolboxName => "Business Analyst Tools";

        public override string ToolName => "Generate Segmentation Profile Report";

        public override string CallName => "ba.GenerateSegmentationProfileReport";

        public override List<string> AcceptEnvironments => ["baDataSource", "workspace"];

        public override object[] ParameterInfo => [_target_profile, _base_profile, _report_title, _report_folder, _report_format, _output_report];

        /// <summary>
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be profiled. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Profile")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_profile { get; set; }


        /// <summary>
        /// <para>Base Profile</para>
        /// <para>A segmentation profile representing the base profile segments. This is the segmentation used for comparison. The base profile usually represents your market area segmentation profile.</para>
        /// <para>表示基本配置文件段的分段配置文件。这是用于比较的细分。基本概况通常代表您的市场区域细分概况。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Base Profile")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _base_profile { get; set; }


        /// <summary>
        /// <para>Report Title</para>
        /// <para>The title of the report.</para>
        /// <para>报表的标题。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Title")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _report_title { get; set; } = null;


        /// <summary>
        /// <para>Output Report Folder</para>
        /// <para>The output location to which the report will be saved.</para>
        /// <para>报表将保存到的输出位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report Folder")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _report_folder { get; set; } = null;


        /// <summary>
        /// <para>Report Output Formats</para>
        /// <para>The report output format. The default value is PDF. Additional available formats are XLSX, HTML, CSV, and PAGX.</para>
        /// <para>报表输出格式。默认值为 PDF。其他可用格式包括 XLSX、HTML、CSV 和 PAGX。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Output Formats")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _report_format { get; set; } = null;


        /// <summary>
        /// <para>Output Report</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public List<object> _output_report { get; set; }


        public GenerateSegmentationProfileReport SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}